The following descriptions relate to a computer device, and more particularly, to using shaders in rendering graphics on a computer device.
Computer graphics systems, which can render two-dimensional (2D) objects or objects from a three-dimensional (3D) world (real or imaginary) onto a 2D display screen, are currently used in a wide variety of applications. For example, 3D computer graphics can be used for real-time interactive applications, such as video games, virtual reality, scientific research, etc., as well as off-line applications, such as the creation of high resolution movies, graphic art, etc. Typically, the graphics system includes a graphics processing unit (GPU). A GPU may be implemented as a co-processor component to a central processing unit (CPU) of the computer, and may be provided in the form of an add-in card (e.g., video card), co-processor, or as functionality that is integrated directly into the motherboard of the computer or into other devices, such as a gaming device.
Typically, the GPU has a “logical graphics pipeline,” which may accept as input some representation of a 2D or 3D scene and output a bitmap that defines a 2D image for display. For example, the DIRECTX collection of application programming interfaces by MICROSOFT CORPORATION, including the DIRECT3D application programming interface (API), is an example of APIs that have graphic pipeline models. Another example includes the Open Graphics Library (OPENGL) API. The graphics pipeline typically includes a number of stages to convert a group of vertices, textures, buffers, and state information into an image frame on the screen. For instance, one of the stages of the graphics pipeline is a shader. A shader is a piece of code running on a specialized processing unit, also referred to as a shader unit or shader processor, usually executing multiple data threads at once, programmed to generate appropriate levels of color and/or special effects to fragments being rendered. In particular, for example, a vertex shader processes traits (position, texture coordinates, color, etc.) of a vertex, and a pixel shader processes traits (texture values, color, z-depth and alpha value) of a pixel. Typically, a constant sampling rate within the graphics pipeline is used for rendering an entire frame. Because of the desire for high-fidelity images, pixel shading is typically performed at a per-pixel rate. Thus, the computer device operates the graphics pipeline to convert information about 3D objects into a bitmap that can be displayed, and this process requires considerable memory and processing power.
There are continuing increases in pixel density and display resolution, and a continuing desire for power reduction in display devices capable of displaying 3D objects in this regard.